package com.example.kotlinstudy.控制流程

fun main() {
    //Try是一个表达式
    val c = 5
    val b = 1
    val a: Int? = try {
        c + b
    } catch (e: NumberFormatException) {
        null
    }
    //Nothing类型
    //val s = person.name ?: throw IllegalArgumentException("Name required")
    //当你调用该函数时，编译器会知道在该调用后就不再继续执行了：
    //val s = person.name ?: fail("Name required")
    //print(s)
    //如果用 null 来初始化一个要推断类型的值，而又没有其他信息可用于确定更具体的类型时，编译器会推断出 Nothing? 类型：
    val x = null //// “x”具有类型 `Nothing?`
    val l = listOf(null) // “l”具有类型 `List<Nothing?>
}

//throw
fun throwTest() {
    throw Exception("Hi There!")
}

//try catch
fun tryTest() {
    try {

    } catch (e: NumberFormatException) {

    } finally {

    }
}

//受检异常
//Appendable append(CharSequence csq) throw IOException

//Nothing表示不会返回的函数
fun fail(message: String): Nothing {
    throw IllegalArgumentException(message);
}


